Législatives 2024

Etude : Prévisions des intentions de votes

Premier Tour

billets

Auteur: Stéphane Srsa

In [77]:
# Librairies et fonctions
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.pyplot as plt
import folium
from folium.features import GeoJson, GeoJsonTooltip
import geopandas as gpd
from branca.element import Element
import warnings
warnings.filterwarnings("ignore")
from Legis_Fonctions import *
Analyse des résultats Européennes 2024
Préparation du fichier
In [5]:
# Charger les fichiers des résultats par circonscription et par commune:
Europ2024 = pd.read_csv('resultats-definitifs-par-circonscription.csv', sep=";")
# Renommer les colonnes pour correspondance au df 'gdf'
Europ2024.rename(columns={'Code circonscription législative': 'codeCirconscription',
                            'Libellé circonscription législative':'nomCirconscription','Libellé département':'nomDepartement'}, inplace=True)
In [6]:
Europ2024.info(1)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 577 entries, 0 to 576
Data columns (total 322 columns):
 #    Column                      Dtype 
---   ------                      ----- 
 0    Code département            object
 1    nomDepartement              object
 2    codeCirconscription         object
 3    nomCirconscription          object
 4    Inscrits                    int64 
 5    Votants                     int64 
 6    % Votants                   object
 7    Abstentions                 int64 
 8    % Abstentions               object
 9    Exprimés                    int64 
 10   % Exprimés/inscrits         object
 11   % Exprimés/votants          object
 12   Blancs                      int64 
 13   % Blancs/inscrits           object
 14   % Blancs/votants            object
 15   Nuls                        int64 
 16   % Nuls/inscrits             object
 17   % Nuls/votants              object
 18   Numéro de panneau 1         int64 
 19   Nuance liste 1              object
 20   Libellé abrégé de liste 1   object
 21   Libellé de liste 1          object
 22   Voix 1                      int64 
 23   % Voix/inscrits 1           object
 24   % Voix/exprimés 1           object
 25   Sièges 1                    int64 
 26   Numéro de panneau 2         int64 
 27   Nuance liste 2              object
 28   Libellé abrégé de liste 2   object
 29   Libellé de liste 2          object
 30   Voix 2                      int64 
 31   % Voix/inscrits 2           object
 32   % Voix/exprimés 2           object
 33   Sièges 2                    int64 
 34   Numéro de panneau 3         int64 
 35   Nuance liste 3              object
 36   Libellé abrégé de liste 3   object
 37   Libellé de liste 3          object
 38   Voix 3                      int64 
 39   % Voix/inscrits 3           object
 40   % Voix/exprimés 3           object
 41   Sièges 3                    int64 
 42   Numéro de panneau 4         int64 
 43   Nuance liste 4              object
 44   Libellé abrégé de liste 4   object
 45   Libellé de liste 4          object
 46   Voix 4                      int64 
 47   % Voix/inscrits 4           object
 48   % Voix/exprimés 4           object
 49   Sièges 4                    int64 
 50   Numéro de panneau 5         int64 
 51   Nuance liste 5              object
 52   Libellé abrégé de liste 5   object
 53   Libellé de liste 5          object
 54   Voix 5                      int64 
 55   % Voix/inscrits 5           object
 56   % Voix/exprimés 5           object
 57   Sièges 5                    int64 
 58   Numéro de panneau 6         int64 
 59   Nuance liste 6              object
 60   Libellé abrégé de liste 6   object
 61   Libellé de liste 6          object
 62   Voix 6                      int64 
 63   % Voix/inscrits 6           object
 64   % Voix/exprimés 6           object
 65   Sièges 6                    int64 
 66   Numéro de panneau 7         int64 
 67   Nuance liste 7              object
 68   Libellé abrégé de liste 7   object
 69   Libellé de liste 7          object
 70   Voix 7                      int64 
 71   % Voix/inscrits 7           object
 72   % Voix/exprimés 7           object
 73   Sièges 7                    int64 
 74   Numéro de panneau 8         int64 
 75   Nuance liste 8              object
 76   Libellé abrégé de liste 8   object
 77   Libellé de liste 8          object
 78   Voix 8                      int64 
 79   % Voix/inscrits 8           object
 80   % Voix/exprimés 8           object
 81   Sièges 8                    int64 
 82   Numéro de panneau 9         int64 
 83   Nuance liste 9              object
 84   Libellé abrégé de liste 9   object
 85   Libellé de liste 9          object
 86   Voix 9                      int64 
 87   % Voix/inscrits 9           object
 88   % Voix/exprimés 9           object
 89   Sièges 9                    int64 
 90   Numéro de panneau 10        int64 
 91   Nuance liste 10             object
 92   Libellé abrégé de liste 10  object
 93   Libellé de liste 10         object
 94   Voix 10                     int64 
 95   % Voix/inscrits 10          object
 96   % Voix/exprimés 10          object
 97   Sièges 10                   int64 
 98   Numéro de panneau 11        int64 
 99   Nuance liste 11             object
 100  Libellé abrégé de liste 11  object
 101  Libellé de liste 11         object
 102  Voix 11                     int64 
 103  % Voix/inscrits 11          object
 104  % Voix/exprimés 11          object
 105  Sièges 11                   int64 
 106  Numéro de panneau 12        int64 
 107  Nuance liste 12             object
 108  Libellé abrégé de liste 12  object
 109  Libellé de liste 12         object
 110  Voix 12                     int64 
 111  % Voix/inscrits 12          object
 112  % Voix/exprimés 12          object
 113  Sièges 12                   int64 
 114  Numéro de panneau 13        int64 
 115  Nuance liste 13             object
 116  Libellé abrégé de liste 13  object
 117  Libellé de liste 13         object
 118  Voix 13                     int64 
 119  % Voix/inscrits 13          object
 120  % Voix/exprimés 13          object
 121  Sièges 13                   int64 
 122  Numéro de panneau 14        int64 
 123  Nuance liste 14             object
 124  Libellé abrégé de liste 14  object
 125  Libellé de liste 14         object
 126  Voix 14                     int64 
 127  % Voix/inscrits 14          object
 128  % Voix/exprimés 14          object
 129  Sièges 14                   int64 
 130  Numéro de panneau 15        int64 
 131  Nuance liste 15             object
 132  Libellé abrégé de liste 15  object
 133  Libellé de liste 15         object
 134  Voix 15                     int64 
 135  % Voix/inscrits 15          object
 136  % Voix/exprimés 15          object
 137  Sièges 15                   int64 
 138  Numéro de panneau 16        int64 
 139  Nuance liste 16             object
 140  Libellé abrégé de liste 16  object
 141  Libellé de liste 16         object
 142  Voix 16                     int64 
 143  % Voix/inscrits 16          object
 144  % Voix/exprimés 16          object
 145  Sièges 16                   int64 
 146  Numéro de panneau 17        int64 
 147  Nuance liste 17             object
 148  Libellé abrégé de liste 17  object
 149  Libellé de liste 17         object
 150  Voix 17                     int64 
 151  % Voix/inscrits 17          object
 152  % Voix/exprimés 17          object
 153  Sièges 17                   int64 
 154  Numéro de panneau 18        int64 
 155  Nuance liste 18             object
 156  Libellé abrégé de liste 18  object
 157  Libellé de liste 18         object
 158  Voix 18                     int64 
 159  % Voix/inscrits 18          object
 160  % Voix/exprimés 18          object
 161  Sièges 18                   int64 
 162  Numéro de panneau 19        int64 
 163  Nuance liste 19             object
 164  Libellé abrégé de liste 19  object
 165  Libellé de liste 19         object
 166  Voix 19                     int64 
 167  % Voix/inscrits 19          object
 168  % Voix/exprimés 19          object
 169  Sièges 19                   int64 
 170  Numéro de panneau 20        int64 
 171  Nuance liste 20             object
 172  Libellé abrégé de liste 20  object
 173  Libellé de liste 20         object
 174  Voix 20                     int64 
 175  % Voix/inscrits 20          object
 176  % Voix/exprimés 20          object
 177  Sièges 20                   int64 
 178  Numéro de panneau 21        int64 
 179  Nuance liste 21             object
 180  Libellé abrégé de liste 21  object
 181  Libellé de liste 21         object
 182  Voix 21                     int64 
 183  % Voix/inscrits 21          object
 184  % Voix/exprimés 21          object
 185  Sièges 21                   int64 
 186  Numéro de panneau 22        int64 
 187  Nuance liste 22             object
 188  Libellé abrégé de liste 22  object
 189  Libellé de liste 22         object
 190  Voix 22                     int64 
 191  % Voix/inscrits 22          object
 192  % Voix/exprimés 22          object
 193  Sièges 22                   int64 
 194  Numéro de panneau 23        int64 
 195  Nuance liste 23             object
 196  Libellé abrégé de liste 23  object
 197  Libellé de liste 23         object
 198  Voix 23                     int64 
 199  % Voix/inscrits 23          object
 200  % Voix/exprimés 23          object
 201  Sièges 23                   int64 
 202  Numéro de panneau 24        int64 
 203  Nuance liste 24             object
 204  Libellé abrégé de liste 24  object
 205  Libellé de liste 24         object
 206  Voix 24                     int64 
 207  % Voix/inscrits 24          object
 208  % Voix/exprimés 24          object
 209  Sièges 24                   int64 
 210  Numéro de panneau 25        int64 
 211  Nuance liste 25             object
 212  Libellé abrégé de liste 25  object
 213  Libellé de liste 25         object
 214  Voix 25                     int64 
 215  % Voix/inscrits 25          object
 216  % Voix/exprimés 25          object
 217  Sièges 25                   int64 
 218  Numéro de panneau 26        int64 
 219  Nuance liste 26             object
 220  Libellé abrégé de liste 26  object
 221  Libellé de liste 26         object
 222  Voix 26                     int64 
 223  % Voix/inscrits 26          object
 224  % Voix/exprimés 26          object
 225  Sièges 26                   int64 
 226  Numéro de panneau 27        int64 
 227  Nuance liste 27             object
 228  Libellé abrégé de liste 27  object
 229  Libellé de liste 27         object
 230  Voix 27                     int64 
 231  % Voix/inscrits 27          object
 232  % Voix/exprimés 27          object
 233  Sièges 27                   int64 
 234  Numéro de panneau 28        int64 
 235  Nuance liste 28             object
 236  Libellé abrégé de liste 28  object
 237  Libellé de liste 28         object
 238  Voix 28                     int64 
 239  % Voix/inscrits 28          object
 240  % Voix/exprimés 28          object
 241  Sièges 28                   int64 
 242  Numéro de panneau 29        int64 
 243  Nuance liste 29             object
 244  Libellé abrégé de liste 29  object
 245  Libellé de liste 29         object
 246  Voix 29                     int64 
 247  % Voix/inscrits 29          object
 248  % Voix/exprimés 29          object
 249  Sièges 29                   int64 
 250  Numéro de panneau 30        int64 
 251  Nuance liste 30             object
 252  Libellé abrégé de liste 30  object
 253  Libellé de liste 30         object
 254  Voix 30                     int64 
 255  % Voix/inscrits 30          object
 256  % Voix/exprimés 30          object
 257  Sièges 30                   int64 
 258  Numéro de panneau 31        int64 
 259  Nuance liste 31             object
 260  Libellé abrégé de liste 31  object
 261  Libellé de liste 31         object
 262  Voix 31                     int64 
 263  % Voix/inscrits 31          object
 264  % Voix/exprimés 31          object
 265  Sièges 31                   int64 
 266  Numéro de panneau 32        int64 
 267  Nuance liste 32             object
 268  Libellé abrégé de liste 32  object
 269  Libellé de liste 32         object
 270  Voix 32                     int64 
 271  % Voix/inscrits 32          object
 272  % Voix/exprimés 32          object
 273  Sièges 32                   int64 
 274  Numéro de panneau 33        int64 
 275  Nuance liste 33             object
 276  Libellé abrégé de liste 33  object
 277  Libellé de liste 33         object
 278  Voix 33                     int64 
 279  % Voix/inscrits 33          object
 280  % Voix/exprimés 33          object
 281  Sièges 33                   int64 
 282  Numéro de panneau 34        int64 
 283  Nuance liste 34             object
 284  Libellé abrégé de liste 34  object
 285  Libellé de liste 34         object
 286  Voix 34                     int64 
 287  % Voix/inscrits 34          object
 288  % Voix/exprimés 34          object
 289  Sièges 34                   int64 
 290  Numéro de panneau 35        int64 
 291  Nuance liste 35             object
 292  Libellé abrégé de liste 35  object
 293  Libellé de liste 35         object
 294  Voix 35                     int64 
 295  % Voix/inscrits 35          object
 296  % Voix/exprimés 35          object
 297  Sièges 35                   int64 
 298  Numéro de panneau 36        int64 
 299  Nuance liste 36             object
 300  Libellé abrégé de liste 36  object
 301  Libellé de liste 36         object
 302  Voix 36                     int64 
 303  % Voix/inscrits 36          object
 304  % Voix/exprimés 36          object
 305  Sièges 36                   int64 
 306  Numéro de panneau 37        int64 
 307  Nuance liste 37             object
 308  Libellé abrégé de liste 37  object
 309  Libellé de liste 37         object
 310  Voix 37                     int64 
 311  % Voix/inscrits 37          object
 312  % Voix/exprimés 37          object
 313  Sièges 37                   int64 
 314  Numéro de panneau 38        int64 
 315  Nuance liste 38             object
 316  Libellé abrégé de liste 38  object
 317  Libellé de liste 38         object
 318  Voix 38                     int64 
 319  % Voix/inscrits 38          object
 320  % Voix/exprimés 38          object
 321  Sièges 38                   int64 
dtypes: int64(120), object(202)
memory usage: 1.4+ MB
In [7]:
#--------------------------------------------- Mise en valeurs numériques des colonnes 'pourcentage' ---------------------------

# Colonnes récurrentes (par liste)
colonnes1 = [f'% Voix/exprimés {i}' for i in range(1, 39)]
colonnes2 = [f'% Voix/inscrits {i}' for i in range(1, 39)]
colonnes = colonnes1 + colonnes2

# Switch from 'object' to 'float64':
for col in colonnes:
    Europ2024[col] = Europ2024[col].str.replace(',', '.').str.rstrip('%').astype('float')

# Colonnes fixes
colonnes = [
    '% Votants', '% Abstentions', '% Exprimés/inscrits', '% Exprimés/votants', 
    '% Blancs/inscrits', '% Blancs/votants', '% Nuls/inscrits', '% Nuls/votants'
]
for col in colonnes:
    Europ2024[col] = Europ2024[col].str.replace(',', '.').str.rstrip('%').astype('float')
    
Europ2024.info(1)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 577 entries, 0 to 576
Data columns (total 322 columns):
 #    Column                      Dtype  
---   ------                      -----  
 0    Code département            object 
 1    nomDepartement              object 
 2    codeCirconscription         object 
 3    nomCirconscription          object 
 4    Inscrits                    int64  
 5    Votants                     int64  
 6    % Votants                   float64
 7    Abstentions                 int64  
 8    % Abstentions               float64
 9    Exprimés                    int64  
 10   % Exprimés/inscrits         float64
 11   % Exprimés/votants          float64
 12   Blancs                      int64  
 13   % Blancs/inscrits           float64
 14   % Blancs/votants            float64
 15   Nuls                        int64  
 16   % Nuls/inscrits             float64
 17   % Nuls/votants              float64
 18   Numéro de panneau 1         int64  
 19   Nuance liste 1              object 
 20   Libellé abrégé de liste 1   object 
 21   Libellé de liste 1          object 
 22   Voix 1                      int64  
 23   % Voix/inscrits 1           float64
 24   % Voix/exprimés 1           float64
 25   Sièges 1                    int64  
 26   Numéro de panneau 2         int64  
 27   Nuance liste 2              object 
 28   Libellé abrégé de liste 2   object 
 29   Libellé de liste 2          object 
 30   Voix 2                      int64  
 31   % Voix/inscrits 2           float64
 32   % Voix/exprimés 2           float64
 33   Sièges 2                    int64  
 34   Numéro de panneau 3         int64  
 35   Nuance liste 3              object 
 36   Libellé abrégé de liste 3   object 
 37   Libellé de liste 3          object 
 38   Voix 3                      int64  
 39   % Voix/inscrits 3           float64
 40   % Voix/exprimés 3           float64
 41   Sièges 3                    int64  
 42   Numéro de panneau 4         int64  
 43   Nuance liste 4              object 
 44   Libellé abrégé de liste 4   object 
 45   Libellé de liste 4          object 
 46   Voix 4                      int64  
 47   % Voix/inscrits 4           float64
 48   % Voix/exprimés 4           float64
 49   Sièges 4                    int64  
 50   Numéro de panneau 5         int64  
 51   Nuance liste 5              object 
 52   Libellé abrégé de liste 5   object 
 53   Libellé de liste 5          object 
 54   Voix 5                      int64  
 55   % Voix/inscrits 5           float64
 56   % Voix/exprimés 5           float64
 57   Sièges 5                    int64  
 58   Numéro de panneau 6         int64  
 59   Nuance liste 6              object 
 60   Libellé abrégé de liste 6   object 
 61   Libellé de liste 6          object 
 62   Voix 6                      int64  
 63   % Voix/inscrits 6           float64
 64   % Voix/exprimés 6           float64
 65   Sièges 6                    int64  
 66   Numéro de panneau 7         int64  
 67   Nuance liste 7              object 
 68   Libellé abrégé de liste 7   object 
 69   Libellé de liste 7          object 
 70   Voix 7                      int64  
 71   % Voix/inscrits 7           float64
 72   % Voix/exprimés 7           float64
 73   Sièges 7                    int64  
 74   Numéro de panneau 8         int64  
 75   Nuance liste 8              object 
 76   Libellé abrégé de liste 8   object 
 77   Libellé de liste 8          object 
 78   Voix 8                      int64  
 79   % Voix/inscrits 8           float64
 80   % Voix/exprimés 8           float64
 81   Sièges 8                    int64  
 82   Numéro de panneau 9         int64  
 83   Nuance liste 9              object 
 84   Libellé abrégé de liste 9   object 
 85   Libellé de liste 9          object 
 86   Voix 9                      int64  
 87   % Voix/inscrits 9           float64
 88   % Voix/exprimés 9           float64
 89   Sièges 9                    int64  
 90   Numéro de panneau 10        int64  
 91   Nuance liste 10             object 
 92   Libellé abrégé de liste 10  object 
 93   Libellé de liste 10         object 
 94   Voix 10                     int64  
 95   % Voix/inscrits 10          float64
 96   % Voix/exprimés 10          float64
 97   Sièges 10                   int64  
 98   Numéro de panneau 11        int64  
 99   Nuance liste 11             object 
 100  Libellé abrégé de liste 11  object 
 101  Libellé de liste 11         object 
 102  Voix 11                     int64  
 103  % Voix/inscrits 11          float64
 104  % Voix/exprimés 11          float64
 105  Sièges 11                   int64  
 106  Numéro de panneau 12        int64  
 107  Nuance liste 12             object 
 108  Libellé abrégé de liste 12  object 
 109  Libellé de liste 12         object 
 110  Voix 12                     int64  
 111  % Voix/inscrits 12          float64
 112  % Voix/exprimés 12          float64
 113  Sièges 12                   int64  
 114  Numéro de panneau 13        int64  
 115  Nuance liste 13             object 
 116  Libellé abrégé de liste 13  object 
 117  Libellé de liste 13         object 
 118  Voix 13                     int64  
 119  % Voix/inscrits 13          float64
 120  % Voix/exprimés 13          float64
 121  Sièges 13                   int64  
 122  Numéro de panneau 14        int64  
 123  Nuance liste 14             object 
 124  Libellé abrégé de liste 14  object 
 125  Libellé de liste 14         object 
 126  Voix 14                     int64  
 127  % Voix/inscrits 14          float64
 128  % Voix/exprimés 14          float64
 129  Sièges 14                   int64  
 130  Numéro de panneau 15        int64  
 131  Nuance liste 15             object 
 132  Libellé abrégé de liste 15  object 
 133  Libellé de liste 15         object 
 134  Voix 15                     int64  
 135  % Voix/inscrits 15          float64
 136  % Voix/exprimés 15          float64
 137  Sièges 15                   int64  
 138  Numéro de panneau 16        int64  
 139  Nuance liste 16             object 
 140  Libellé abrégé de liste 16  object 
 141  Libellé de liste 16         object 
 142  Voix 16                     int64  
 143  % Voix/inscrits 16          float64
 144  % Voix/exprimés 16          float64
 145  Sièges 16                   int64  
 146  Numéro de panneau 17        int64  
 147  Nuance liste 17             object 
 148  Libellé abrégé de liste 17  object 
 149  Libellé de liste 17         object 
 150  Voix 17                     int64  
 151  % Voix/inscrits 17          float64
 152  % Voix/exprimés 17          float64
 153  Sièges 17                   int64  
 154  Numéro de panneau 18        int64  
 155  Nuance liste 18             object 
 156  Libellé abrégé de liste 18  object 
 157  Libellé de liste 18         object 
 158  Voix 18                     int64  
 159  % Voix/inscrits 18          float64
 160  % Voix/exprimés 18          float64
 161  Sièges 18                   int64  
 162  Numéro de panneau 19        int64  
 163  Nuance liste 19             object 
 164  Libellé abrégé de liste 19  object 
 165  Libellé de liste 19         object 
 166  Voix 19                     int64  
 167  % Voix/inscrits 19          float64
 168  % Voix/exprimés 19          float64
 169  Sièges 19                   int64  
 170  Numéro de panneau 20        int64  
 171  Nuance liste 20             object 
 172  Libellé abrégé de liste 20  object 
 173  Libellé de liste 20         object 
 174  Voix 20                     int64  
 175  % Voix/inscrits 20          float64
 176  % Voix/exprimés 20          float64
 177  Sièges 20                   int64  
 178  Numéro de panneau 21        int64  
 179  Nuance liste 21             object 
 180  Libellé abrégé de liste 21  object 
 181  Libellé de liste 21         object 
 182  Voix 21                     int64  
 183  % Voix/inscrits 21          float64
 184  % Voix/exprimés 21          float64
 185  Sièges 21                   int64  
 186  Numéro de panneau 22        int64  
 187  Nuance liste 22             object 
 188  Libellé abrégé de liste 22  object 
 189  Libellé de liste 22         object 
 190  Voix 22                     int64  
 191  % Voix/inscrits 22          float64
 192  % Voix/exprimés 22          float64
 193  Sièges 22                   int64  
 194  Numéro de panneau 23        int64  
 195  Nuance liste 23             object 
 196  Libellé abrégé de liste 23  object 
 197  Libellé de liste 23         object 
 198  Voix 23                     int64  
 199  % Voix/inscrits 23          float64
 200  % Voix/exprimés 23          float64
 201  Sièges 23                   int64  
 202  Numéro de panneau 24        int64  
 203  Nuance liste 24             object 
 204  Libellé abrégé de liste 24  object 
 205  Libellé de liste 24         object 
 206  Voix 24                     int64  
 207  % Voix/inscrits 24          float64
 208  % Voix/exprimés 24          float64
 209  Sièges 24                   int64  
 210  Numéro de panneau 25        int64  
 211  Nuance liste 25             object 
 212  Libellé abrégé de liste 25  object 
 213  Libellé de liste 25         object 
 214  Voix 25                     int64  
 215  % Voix/inscrits 25          float64
 216  % Voix/exprimés 25          float64
 217  Sièges 25                   int64  
 218  Numéro de panneau 26        int64  
 219  Nuance liste 26             object 
 220  Libellé abrégé de liste 26  object 
 221  Libellé de liste 26         object 
 222  Voix 26                     int64  
 223  % Voix/inscrits 26          float64
 224  % Voix/exprimés 26          float64
 225  Sièges 26                   int64  
 226  Numéro de panneau 27        int64  
 227  Nuance liste 27             object 
 228  Libellé abrégé de liste 27  object 
 229  Libellé de liste 27         object 
 230  Voix 27                     int64  
 231  % Voix/inscrits 27          float64
 232  % Voix/exprimés 27          float64
 233  Sièges 27                   int64  
 234  Numéro de panneau 28        int64  
 235  Nuance liste 28             object 
 236  Libellé abrégé de liste 28  object 
 237  Libellé de liste 28         object 
 238  Voix 28                     int64  
 239  % Voix/inscrits 28          float64
 240  % Voix/exprimés 28          float64
 241  Sièges 28                   int64  
 242  Numéro de panneau 29        int64  
 243  Nuance liste 29             object 
 244  Libellé abrégé de liste 29  object 
 245  Libellé de liste 29         object 
 246  Voix 29                     int64  
 247  % Voix/inscrits 29          float64
 248  % Voix/exprimés 29          float64
 249  Sièges 29                   int64  
 250  Numéro de panneau 30        int64  
 251  Nuance liste 30             object 
 252  Libellé abrégé de liste 30  object 
 253  Libellé de liste 30         object 
 254  Voix 30                     int64  
 255  % Voix/inscrits 30          float64
 256  % Voix/exprimés 30          float64
 257  Sièges 30                   int64  
 258  Numéro de panneau 31        int64  
 259  Nuance liste 31             object 
 260  Libellé abrégé de liste 31  object 
 261  Libellé de liste 31         object 
 262  Voix 31                     int64  
 263  % Voix/inscrits 31          float64
 264  % Voix/exprimés 31          float64
 265  Sièges 31                   int64  
 266  Numéro de panneau 32        int64  
 267  Nuance liste 32             object 
 268  Libellé abrégé de liste 32  object 
 269  Libellé de liste 32         object 
 270  Voix 32                     int64  
 271  % Voix/inscrits 32          float64
 272  % Voix/exprimés 32          float64
 273  Sièges 32                   int64  
 274  Numéro de panneau 33        int64  
 275  Nuance liste 33             object 
 276  Libellé abrégé de liste 33  object 
 277  Libellé de liste 33         object 
 278  Voix 33                     int64  
 279  % Voix/inscrits 33          float64
 280  % Voix/exprimés 33          float64
 281  Sièges 33                   int64  
 282  Numéro de panneau 34        int64  
 283  Nuance liste 34             object 
 284  Libellé abrégé de liste 34  object 
 285  Libellé de liste 34         object 
 286  Voix 34                     int64  
 287  % Voix/inscrits 34          float64
 288  % Voix/exprimés 34          float64
 289  Sièges 34                   int64  
 290  Numéro de panneau 35        int64  
 291  Nuance liste 35             object 
 292  Libellé abrégé de liste 35  object 
 293  Libellé de liste 35         object 
 294  Voix 35                     int64  
 295  % Voix/inscrits 35          float64
 296  % Voix/exprimés 35          float64
 297  Sièges 35                   int64  
 298  Numéro de panneau 36        int64  
 299  Nuance liste 36             object 
 300  Libellé abrégé de liste 36  object 
 301  Libellé de liste 36         object 
 302  Voix 36                     int64  
 303  % Voix/inscrits 36          float64
 304  % Voix/exprimés 36          float64
 305  Sièges 36                   int64  
 306  Numéro de panneau 37        int64  
 307  Nuance liste 37             object 
 308  Libellé abrégé de liste 37  object 
 309  Libellé de liste 37         object 
 310  Voix 37                     int64  
 311  % Voix/inscrits 37          float64
 312  % Voix/exprimés 37          float64
 313  Sièges 37                   int64  
 314  Numéro de panneau 38        int64  
 315  Nuance liste 38             object 
 316  Libellé abrégé de liste 38  object 
 317  Libellé de liste 38         object 
 318  Voix 38                     int64  
 319  % Voix/inscrits 38          float64
 320  % Voix/exprimés 38          float64
 321  Sièges 38                   int64  
dtypes: float64(84), int64(120), object(118)
memory usage: 1.4+ MB
Résultat des Elections Européennes
In [9]:
# Sélection des colonnes utiles pour les listes de candidats et des voix
Selected_columns_nuance = [f'Libellé abrégé de liste {i}' for i in range(1, 39)]
Selected_columns_voix = [f'Voix {i}' for i in range(1, 39)]
Selected_columns_candidats = [f'Libellé de liste {i}' for i in range(1, 39)]
Selected_columns_vote = [f'% Voix/exprimés {i}' for i in range(1, 39)]
Selected_columns_vote_inscrit = [f'% Voix/inscrits {i}' for i in range(1, 39)]

# Extraction des données Circoncription
List_Candidats = Europ2024[Selected_columns_candidats].iloc[0].tolist()
Voix_Candidats = Europ2024[Selected_columns_voix].sum().tolist()
nuance_Candidats = Europ2024[Selected_columns_nuance].iloc[0].tolist()
Vote_Candidats = Europ2024[Selected_columns_vote].mean().tolist()
Vote_inscrits_Candidats = Europ2024[Selected_columns_vote_inscrit].mean().tolist()


# Création du DF suivant lesCirconcription
Df = pd.DataFrame({
    'Candidats': List_Candidats,
    'Nuance' : nuance_Candidats,
    'Nb de Voix': Voix_Candidats,
    '% voix_exprimées':Vote_Candidats,
    '% voix_inscrits':Vote_inscrits_Candidats
}, index=range(1, len(List_Candidats) + 1))

# Classement par nombre de voix
Df = Df.sort_values(by='Nb de Voix', ascending=False).round(2)

# Affichage des DataFrames
# Circoncription
Resultat_Circon = Df.reset_index()
Resultat_Circon.rename(columns={'index': 'No Liste'},inplace=True)
# Rappel fonction: Tmess(message, Color='firebrick', Align='center', Size='14', Police='arial', Weight='normal', Style='italic')
Tmess('Résultats Européennes 2024','firebrick', Size='20', Weight='bold')
display(Resultat_Circon)
Résultats Européennes 2024
No Liste Candidats Nuance Nb de Voix % voix_exprimées % voix_inscrits
0 5 LA FRANCE REVIENT ! AVEC JORDAN BARDELLA ET MA... La FRANCE REVIENT 7765936 31.03 15.60
1 11 BESOIN D'EUROPE BESOIN D'EUROPE 3614646 14.54 7.25
2 27 RÉVEILLER L'EUROPE REVEIL EUR 3424216 13.52 6.90
3 4 LA FRANCE INSOUMISE - UNION POPULAIRE LFI - UP 2448703 10.76 5.16
4 18 LA DROITE POUR FAIRE ENTENDRE LA VOIX DE LA FR... LA DROITE POUR FAIRE ENTENDRE LA VOIX DE LA FR... 1794171 7.12 3.63
5 6 EUROPE ÉCOLOGIE EUROPE ÉCOLOGIE 1361883 5.45 2.74
6 3 LA FRANCE FIERE, MENEE PAR MARION MARECHAL ET ... LA FRANCE FIERE, MENEE PAR MARION MARECHAL ET ... 1353127 5.48 2.72
7 33 GAUCHE UNIE POUR LE MONDE DU TRAVAIL SOUTENUE ... GAUCHE UNIE 584067 2.34 1.18
8 29 ALLIANCE RURALE AR 582901 2.26 1.17
9 8 PARTI ANIMALISTE - LES ANIMAUX COMPTENT, VOTRE... PARTI ANIMALISTE 495936 1.95 1.00
10 35 ÉCOLOGIE AU CENTRE EAC 316136 1.32 0.63
11 15 LISTE ASSELINEAU-FREXIT, POUR LE POUVOIR D'ACH... LISTE ASSELINEAU-FREXIT 253036 1.08 0.51
12 24 L'EUROPE CA SUFFIT ! L'EUROPE CA SUFFIT ! 229190 0.96 0.46
13 19 LUTTE OUVRIERE - LE CAMP DES TRAVAILLEURS LUTTE OUVRIERE 121281 0.55 0.25
14 14 ECOLOGIE POSITIVE ET TERRITOIRES ECOLOGIE POSITIVE 104954 0.41 0.21
15 13 ÉQUINOXE : ÉCOLOGIE PRATIQUE ET RENOUVEAU DÉMO... ÉQUINOXE 73002 0.28 0.15
16 31 EUROPE TERRITOIRES ÉCOLOGIE EUROPE TERRITOIRES ÉCOLOGIE 63482 0.25 0.13
17 22 POUR UN MONDE SANS FRONTIERES NI PATRONS, URGE... URGENCE REVOLUTION ! 37434 0.15 0.08
18 10 PARTI PIRATE PARTI PIRATE 28119 0.11 0.06
19 7 FREE PALESTINE FREE PALESTINE 14986 0.07 0.03
20 21 NOUS LE PEUPLE NLP 13886 0.06 0.03
21 20 CHANGER L'EUROPE CHANGER L'EUROPE 13068 0.05 0.03
22 37 ESPERANTO LANGUE COMMUNE ESPERANTO 10349 0.04 0.02
23 12 PACE - PARTI DES CITOYENS EUROPÉENS, POUR L'AR... PACE 7397 0.03 0.01
24 30 FRANCE LIBRE FRANCE LIBRE 5474 0.02 0.01
25 34 DEFENDRE LES ENFANTS DEFENDRE LES ENFANTS 5214 0.02 0.01
26 26 FORTERESSE EUROPE - LISTE D'UNITE NATIONALISTE FORTERESSE EUROPE 5096 0.02 0.01
27 23 "POUR LE PAIN, LA PAIX, LA LIBERTÉ !" PRÉSENTÉ... PPL 4120 0.02 0.01
28 32 LA RUCHE CITOYENNE LA RUCHE CITOYENNE 4038 0.02 0.01
29 16 PAIX ET DECROISSANCE PAIX ET DECROISSANCE 3726 0.01 0.01
30 17 POUR UNE AUTRE EUROPE POUR UNE AUTRE EUROPE 3688 0.01 0.01
31 28 NON À L'UE ET À L'OTAN, COMMUNISTES POUR LA PA... NON À L'UE ET À L'OTAN, COMMUNISTES POUR LA PA... 3078 0.01 0.01
32 25 NON ! PRENONS-NOUS EN MAINS PRENONS-NOUS EN MAIN 1507 0.01 0.00
33 9 PARTI REVOLUTIONNAIRE COMMUNISTES PARTI REVOLUTIONNAIRE COMMUNISTES 1497 0.01 0.00
34 2 POUR UNE DEMOCRATIE REELLE : DECIDONS NOUS-MEM... POUR UNE DEMOCRATIE REELLE : DECIDONS NOUS-MEM... 1443 0.01 0.00
35 1 POUR UNE HUMANITE SOUVERAINE HUMANITE SOUVERAINE 1230 0.01 0.00
36 38 LIBERTÉ DÉMOCRATIQUE FRANÇAISE LIBERTÉ DÉMOCRATIQUE FRANÇAISE 1007 0.01 0.00
37 36 DEMOCRATIE REPRESENTATIVE DEMOCRATIE REPRESENTATIVE 749 0.00 0.00
Listes arrivées en-tête par Circonscription
In [11]:
# Classement des Nb_Lists premières :
EuropCirco = TopList_Europ(Europ2024, Nb_Lists = 20)

# Création de la colonne 'somme' en additionnant les valeurs des colonnes numériques
# Sélection des colonnes numériques utilisant une expression régulière
colonnes_numeriques = [col for col in EuropCirco.columns if col.startswith('% Voix Liste')]
EuropCirco['%TotalVotes'] =EuropCirco[colonnes_numeriques].sum(axis=1)
EuropCirco = EuropCirco.sort_values(by="%TotalVotes", ascending=False)

display(EuropCirco.head(2))
display(EuropCirco.tail(2))
Code département nomDepartement codeCirconscription nomCirconscription Inscrits Votants % Votants Abstentions % Abstentions Exprimés ... Liste17 % Voix Liste17 Liste18 % Voix Liste18 Liste19 % Voix Liste19 Liste20 % Voix Liste20 somme %TotalVotes
556 975 Saint-Pierre-et-Miquelon 97501 Saint-Pierre-et-Miquelon 5065 1071 21.15 3994 78.85 1023 ... FRANCE LIBRE 0.10 HUMANITE SOUVERAINE 0.00 POUR UNE DEMOCRATIE REELLE : DECIDONS NOUS-MEM... 0.00 FREE PALESTINE 0.0 100.02 100.02
561 987 Polynésie française 98702 2ème circonscription 69181 7399 10.70 61782 89.30 7103 ... NLP 0.03 PARTI PIRATE 0.01 DEFENDRE LES ENFANTS 0.01 HUMANITE SOUVERAINE 0.0 100.01 100.01

2 rows × 60 columns

Code département nomDepartement codeCirconscription nomCirconscription Inscrits Votants % Votants Abstentions % Abstentions Exprimés ... Liste17 % Voix Liste17 Liste18 % Voix Liste18 Liste19 % Voix Liste19 Liste20 % Voix Liste20 somme %TotalVotes
504 92 Hauts-de-Seine 9212 12ème circonscription 94555 55899 59.12 38656 40.88 54909 ... ÉQUINOXE 0.38 FORTERESSE EUROPE 0.29 EUROPE TERRITOIRES ÉCOLOGIE 0.28 PACE 0.27 99.02 99.02
548 973 Guyane 97302 2ème circonscription 49813 3722 7.47 46091 92.53 3528 ... PARTI ANIMALISTE 0.17 PARTI PIRATE 0.17 FRANCE LIBRE 0.17 PPL 0.14 99.02 99.02

2 rows × 60 columns

In [ ]:
 
Analyse des résultats LEGISLATIVES 2022 - Listes arrivées en-tête par Circonscription
In [13]:
Legis2022 = pd.read_excel("Legis2022-Circons.xlsx")
Legis2022.info(1)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 550 entries, 0 to 549
Data columns (total 47 columns):
 #   Column          Non-Null Count  Dtype  
---  ------          --------------  -----  
 0   COD_CIRCONS     550 non-null    object 
 1   Inscrits        550 non-null    int64  
 2   Abstentions     550 non-null    int64  
 3    % Abs/Ins      550 non-null    float64
 4   Votants         550 non-null    int64  
 5   % Vot/Ins       550 non-null    float64
 6   Blancs          550 non-null    int64  
 7   Blancs/Ins      550 non-null    float64
 8   % Blancs/Vot    550 non-null    float64
 9   Nuls            550 non-null    int64  
 10  % Nuls/Ins      550 non-null    float64
 11  % Nuls/Vot      550 non-null    float64
 12  Exprimés        550 non-null    int64  
 13  % Exp/Ins       550 non-null    float64
 14  % Exp/Vot       550 non-null    float64
 15  DIV Voix        550 non-null    int64  
 16  DIV % Voix/Exp  550 non-null    float64
 17  DSV Voix        550 non-null    int64  
 18  DSV % Voix/Exp  550 non-null    float64
 19  DVC Voix        550 non-null    int64  
 20  DVC % Voix/Exp  550 non-null    float64
 21  DVD Voix        550 non-null    int64  
 22  DVD % Voix/Exp  550 non-null    float64
 23  DVG Voix        550 non-null    int64  
 24  DVG % Voix/Exp  550 non-null    float64
 25  DXD Voix        550 non-null    int64  
 26  DXD % Voix/Exp  550 non-null    float64
 27  DXG Voix        550 non-null    int64  
 28  DXG % Voix/Exp  550 non-null    float64
 29  ECO Voix        550 non-null    int64  
 30  ECO % Voix/Exp  550 non-null    float64
 31  ENS Voix        550 non-null    int64  
 32  ENS % Voix/Exp  550 non-null    float64
 33  LR Voix         550 non-null    int64  
 34  LR % Voix/Exp   550 non-null    float64
 35  NUP Voix        550 non-null    int64  
 36  NUP % Voix/Exp  550 non-null    float64
 37  RDG Voix        550 non-null    int64  
 38  RDG % Voix/Exp  550 non-null    float64
 39  REC Voix        550 non-null    int64  
 40  REC % Voix/Exp  550 non-null    float64
 41  Reg Voix        550 non-null    int64  
 42  REG % Voix/Exp  550 non-null    float64
 43  RN Voix         550 non-null    int64  
 44  RN % Voix/Exp   550 non-null    float64
 45  UDI Voix        550 non-null    int64  
 46  UDI % Voix/Exp  550 non-null    float64
dtypes: float64(24), int64(22), object(1)
memory usage: 202.1+ KB
In [14]:
Resultat_2022 = top_Legis2022(Legis2022,4)
Resultat_2022
Out[14]:
COD_CIRCONS Inscrits Abstentions % Abs/Ins Votants % Vot/Ins Blancs Blancs/Ins % Blancs/Vot Nuls ... DIV % Voix/Exp DSV Voix Top_1_List Top_1_% Top_2_List Top_2_% Top_3_List Top_3_% Top_4_List Top_4_%
0 0101 86187 43652 49.306930 42535 50.693070 490 0.586842 1.165789 234 ... 0.00 641 LR % Voix/Exp 25.43 NUP % Voix/Exp 23.01 RN % Voix/Exp 22.94 ENS % Voix/Exp 18.42
1 0102 98818 49731 49.657596 49087 50.342500 619 0.650673 1.292692 166 ... 0.52 653 ENS % Voix/Exp 25.77 NUP % Voix/Exp 24.87 RN % Voix/Exp 23.75 LR % Voix/Exp 15.32
2 0103 82204 45946 52.908636 36258 47.091364 385 0.647636 1.332182 144 ... 0.77 543 ENS % Voix/Exp 28.19 NUP % Voix/Exp 23.07 LR % Voix/Exp 17.92 RN % Voix/Exp 15.59
3 0104 94897 49258 50.662672 45639 49.337414 640 0.736810 1.499914 207 ... 0.00 562 RN % Voix/Exp 25.52 LR % Voix/Exp 16.89 NUP % Voix/Exp 16.89 ENS % Voix/Exp 15.72
4 0105 77456 40382 47.157338 37074 52.842662 820 1.375468 2.502662 206 ... 1.53 436 NUP % Voix/Exp 24.32 RN % Voix/Exp 19.64 DVD % Voix/Exp 18.32 LR % Voix/Exp 9.18
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
545 9707 238760 168793 71.126593 69967 28.873462 1359 0.900824 3.273187 1307 ... 1.48 636 NUP % Voix/Exp 24.94 DVC % Voix/Exp 12.13 ENS % Voix/Exp 10.72 DVG % Voix/Exp 8.68
546 9708 131219 115176 83.964167 16043 16.035833 180 0.245000 1.565833 16 ... 3.30 0 ENS % Voix/Exp 27.31 UDI % Voix/Exp 23.15 NUP % Voix/Exp 22.74 REC % Voix/Exp 7.05
547 9709 120556 102826 84.742778 17730 15.257222 392 0.357222 2.686111 70 ... 0.10 0 NUP % Voix/Exp 40.20 ENS % Voix/Exp 25.91 DVD % Voix/Exp 6.38 REC % Voix/Exp 5.81
548 9710 104303 83943 78.094894 20360 21.905106 290 0.407021 1.868511 45 ... 1.04 158 NUP % Voix/Exp 33.08 ENS % Voix/Exp 28.05 LR % Voix/Exp 9.35 REC % Voix/Exp 8.07
549 9711 98853 70840 73.298776 28013 26.701224 324 0.333878 1.229184 57 ... 0.00 481 ENS % Voix/Exp 34.23 NUP % Voix/Exp 26.49 REC % Voix/Exp 10.35 DVC % Voix/Exp 8.93

550 rows × 26 columns

In [15]:
# Sauvegarde du fichier préparé:
#Resultat_2022.to_excel("4eresListes2022.xlsx", index=True)
Prévisions Législatives 2024 - Participation égale aux Européennes 2024
Préparation du fichier
In [18]:
Prev2024=pd.read_excel("PrevisionsLegis_2024.xlsx")
#Prev2024=Prev2024.iloc[0:539]
#Prev2024.iloc[:,18:45]
Prev2024.info(1)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 577 entries, 0 to 576
Data columns (total 64 columns):
 #   Column                                Non-Null Count  Dtype  
---  ------                                --------------  -----  
 0   Code département                      577 non-null    object 
 1   Libellé département                   577 non-null    object 
 2   Code circonscription législative      577 non-null    object 
 3   Libellé circonscription législative   577 non-null    object 
 4   Inscrits                              577 non-null    int64  
 5   Votants                               577 non-null    int64  
 6   % Votants                             577 non-null    float64
 7   Abstentions                           577 non-null    int64  
 8   % Abstentions                         577 non-null    float64
 9   Exprimés                              577 non-null    int64  
 10  % Exprimés/inscrits                   577 non-null    float64
 11  % Exprimés/votants                    577 non-null    float64
 12  Blancs                                577 non-null    int64  
 13  % Blancs/inscrits                     577 non-null    float64
 14  % Blancs/votants                      577 non-null    float64
 15  Nuls                                  577 non-null    int64  
 16  % Nuls/inscrits                       577 non-null    float64
 17  % Nuls/votants                        577 non-null    float64
 18  Divers centre                         539 non-null    float64
 19  Nb VOIX DIVC                          577 non-null    float64
 20  %VOIX DIVC                            577 non-null    float64
 21  Divers gauche                         577 non-null    int64  
 22  Nb VOIX DIVG                          577 non-null    float64
 23  %VOIX Divers Gauche                   577 non-null    float64
 24  Ecologistes                           577 non-null    int64  
 25  Nb VOIX Ecologiques                   577 non-null    int64  
 26  %VOIX Ecologie                        577 non-null    float64
 27  Ensemble                              577 non-null    int64  
 28  Nb VOIX Ensemble                      577 non-null    float64
 29  %VOIX Ensemble                        577 non-null    float64
 30  Extrême droite                        577 non-null    int64  
 31  Nb VOIX EXT Droite                    577 non-null    float64
 32  %VOIX EXT Droite                      577 non-null    float64
 33  Extrême gauche                        577 non-null    int64  
 34  NB VOIX EXTG                          577 non-null    int64  
 35  %VOIX Ext Gauche                      577 non-null    float64
 36  Horizons                              577 non-null    int64  
 37  Nb VOIX Horizons                      577 non-null    float64
 38  %VOIX Horizons                        577 non-null    float64
 39  Les Républicains                      577 non-null    int64  
 40  Nb VOIX Les Républicains              577 non-null    float64
 41  %VOIX Les Républicains                577 non-null    float64
 42  Parti socialiste                      577 non-null    int64  
 43  Nb VOIX PS                            577 non-null    int64  
 44  %VOIX PS                              577 non-null    float64
 45  Rassemblement National                577 non-null    int64  
 46  Nb VOIX RN                            577 non-null    float64
 47  %VOIX RN                              577 non-null    float64
 48  Reconquête !                          577 non-null    int64  
 49  Nb VOIX Reconquête                    577 non-null    float64
 50  %VOIX Reconquête                      577 non-null    float64
 51  Régionaliste                          577 non-null    int64  
 52  Nb VOIX REG                           577 non-null    int64  
 53  %VOIX REG                             577 non-null    float64
 54  Union de la gauche                    577 non-null    int64  
 55  Nb VOIX UG                            577 non-null    float64
 56  %VOIX UG                              577 non-null    float64
 57  Union de l'extrême droite             577 non-null    int64  
 58  Nb VOIX Union EXTD                    577 non-null    float64
 59  %VOIX EXTD                            577 non-null    float64
 60  Union des Démocrates et Indépendants  577 non-null    int64  
 61  Nb VOIX UDI                           577 non-null    float64
 62  %VOIX UDI                             577 non-null    float64
 63  TOTAL %VOIX/exp                       577 non-null    float64
dtypes: float64(36), int64(24), object(4)
memory usage: 288.6+ KB
In [19]:
# Prévisions du % de vote des 3 principales listes

Tmess("Union Gauche tout confondu: {}%".format(round((Prev2024["%VOIX UG"]+Prev2024["%VOIX PS"]+Prev2024["%VOIX Ecologie"]).mean()*100,2)),
      Color='red', Align='left', Weight='bold')
Tmess("Union Gauche seule: {}%".format(round((Prev2024["%VOIX UG"]).mean()*100,2)),
      Color='red', Align='left', Weight='bold')

Tmess("Ensemble tout confondu: {}%".format(round((Prev2024["%VOIX Ensemble"]+Prev2024["%VOIX Horizons"]+Prev2024["%VOIX UDI"]).mean()*100,2)),
      Color='peru', Align='left', Weight='bold')
Tmess("Ensemble seule: {}%".format(round((Prev2024["%VOIX Ensemble"]).mean()*100,2)),
      Color='peru', Align='left', Weight='bold')

Tmess("RN&Alliés tout confondu: {}%".format(round((Prev2024["%VOIX RN"]+Prev2024["%VOIX EXTD"]).mean()*100,2)),
      Color='darkblue', Align='left', Weight='bold')
Tmess("RN seul: {}%".format(round((Prev2024["%VOIX RN"]).mean()*100,2)),
      Color='darkblue', Align='left', Weight='bold')


Tmess("Les Républicains: {}%".format(round((Prev2024["%VOIX Les Républicains"]).mean()*100,2)),
      Color='blue', Align='left', Weight='bold')
Union Gauche tout confondu: 26.48%
Union Gauche seule: 24.71%
Ensemble tout confondu: 18.77%
Ensemble seule: 17.69%
RN&Alliés tout confondu: 35.48%
RN seul: 31.58%
Les Républicains: 1.56%
Listes élues au premier tour / Prévisions
In [21]:
Resultat_2024 = top_Legis2022(Prev2024,5,AN=22)

# Afficher les résultats
Resultat_2024.iloc[:,18:30].head(3)
Out[21]:
Top_1_List Top_1_% Top_2_List Top_2_% Top_3_List Top_3_% Top_4_List Top_4_% Top_5_List Top_5_%
0 %VOIX RN 0.43223 %VOIX UG 0.21908 %VOIX Ensemble 0.21706 %VOIX Les Républicains 0.03088 %VOIX Ext Gauche 0.0054
1 %VOIX RN 0.42522 %VOIX DIVC 0.22806 %VOIX UG 0.22278 %VOIX Les Républicains 0.03168 %VOIX Ext Gauche 0.0048
2 %VOIX RN 0.33492 %VOIX UG 0.26926 %VOIX Ensemble 0.26006 %VOIX Les Républicains 0.02884 %VOIX Ext Gauche 0.0050
In [22]:
# Estimation Elu 1er tour
Tmess("Projection du Nb de candidats RN élus au 1er Tour: {} Sièges".format(Resultat_2024.loc[(Resultat_2024["Top_1_%"] >= 0.5) & 
                                                                     (Resultat_2024["Top_1_List"] == "%VOIX RN")].shape[0]),
                                                                    Color ='darkblue', Align='left', Weight='bold')
Tmess("Projection du Nb de candidats UG élus au 1er Tour: {} Sièges".format(Resultat_2024.loc[(Resultat_2024["Top_1_%"] >= 0.5) & 
                                                                     (Resultat_2024["Top_1_List"] == "%VOIX UG")].shape[0]),
                                                                    Color ='red', Align='left', Weight='bold')
Tmess("Projection du Nb de candidats Ensemble élus au 1er Tour: {} Sièges".format(Resultat_2024.loc[(Resultat_2024["Top_1_%"] >= 0.5) & 
                                                                     (Resultat_2024["Top_1_List"] == "%VOIX Ensemble")].shape[0]),
                                                                    Color ='peru', Align='left', Weight='bold')
Projection du Nb de candidats RN élus au 1er Tour: 53 Sièges
Projection du Nb de candidats UG élus au 1er Tour: 20 Sièges
Projection du Nb de candidats Ensemble élus au 1er Tour: 0 Sièges
Choix % votants supplémentaires : 30% de plus qu'au Européennes 2024
In [24]:
# Choix du taux de participation supplémentaire par rapport au Européennes 2024
TauxVote = 0.3
# Choix de la répartition des votes supplémentaires en % (UG,RN,ENS etLR)
Tauxsup = [0.3,0.2,0.35,0.15]
# Création de la table à partir du DF Prev2024
Votants = Prev2024.iloc[:, :6]
Votants=Votants.rename(columns={"Votants": "Votants_EE (Base)"})
In [25]:
# Création des colonnes du DF
# Adaptation des résultats de listes en fonction des votes supplémentaires:
Votants["Votants"] = round(Votants["Votants_EE (Base)"] * TauxVote + Votants["Votants_EE (Base)"],0).astype(int)
Votants["% Votants"] = round((Votants["Votants"] * 100) / Votants["Inscrits"],2)
Votants["Votants Supp"] = Votants["Votants"] - Votants["Votants_EE (Base)"]
Votants["Voix Supp - UG"] = round(Votants["Votants Supp"] * Tauxsup[0],2).astype(int)
Votants["Voix Supp - RN"] = round(Votants["Votants Supp"] * Tauxsup[1],2).astype(int)
Votants["Voix Supp - ENS"] = round(Votants["Votants Supp"] * Tauxsup[2],2).astype(int)
Votants["Voix Supp - LR"] = round(Votants["Votants Supp"] * Tauxsup[3],2).astype(int)
Votants["Abstentions"] = Votants["Inscrits"] - Votants["Votants"]
Votants["% Abstentions"] = round((Votants["Abstentions"] * 100) / Votants["Inscrits"],2)
Votants["% nuls/blancs Exprimes"] = round((Prev2024["% Blancs/votants"] + Prev2024["% Nuls/votants"]) * 100,2)
Votants["% nuls/blancs Inscrits"] = round((Prev2024["% Blancs/inscrits"] + Prev2024["% Nuls/inscrits"]) * 100,2)
Votants["nuls/blancs"] = round((Votants["% nuls/blancs Exprimes"] * Votants["Votants"])/100,0).astype(int)
Votants["% Expr/Inscrit Supp"] = round(Votants["% Votants"] - Votants["% nuls/blancs Inscrits"],2)
Votants["% Expr/Votants Supp"] = round(100 -Votants["% nuls/blancs Exprimes"],2)
Votants["Voix Exprimées Totales"] = round((Votants["Votants"] * Votants["% Expr/Votants Supp"])/100,0).astype(int)
Votants.head(1)
Out[25]:
Code département Libellé département Code circonscription législative Libellé circonscription législative Inscrits Votants_EE (Base) Votants % Votants Votants Supp Voix Supp - UG ... Voix Supp - ENS Voix Supp - LR Abstentions % Abstentions % nuls/blancs Exprimes % nuls/blancs Inscrits nuls/blancs % Expr/Inscrit Supp % Expr/Votants Supp Voix Exprimées Totales
0 01 Ain 0101 1ère circonscription 86824 48408 62930 72.48 14522 4356 ... 5082 2178 23894 27.52 3.14 1.75 1976 70.73 96.86 60954

1 rows × 21 columns

In [26]:
# Filtrer les colonnes 'Nb VOIX' ou '%VOIX' des différentes listes
colonnes_Listes = [col for col in Prev2024.columns if col.startswith('Nb VOIX') or col.startswith('%VOIX')]
# Sélectionner les colonnes filtrées à partir de df_original
df_List = Prev2024[colonnes_Listes]
# Concaténer df_exist avec df_voix horizontalement
Votants = pd.concat([Votants, df_List], axis=1)
Votants.head(2)
Out[26]:
Code département Libellé département Code circonscription législative Libellé circonscription législative Inscrits Votants_EE (Base) Votants % Votants Votants Supp Voix Supp - UG ... Nb VOIX Reconquête %VOIX Reconquête Nb VOIX REG %VOIX REG Nb VOIX UG %VOIX UG Nb VOIX Union EXTD %VOIX EXTD Nb VOIX UDI %VOIX UDI
0 01 Ain 0101 1ère circonscription 86824 48408 62930 72.48 14522 4356 ... 0.0 0.0 0 0.0 10269.6 0.21908 0.0 0.0 0.0 0.0
1 01 Ain 0102 2ème circonscription 102088 58219 75685 74.14 17466 5239 ... 0.0 0.0 0 0.0 12685.6 0.22278 0.0 0.0 0.0 0.0

2 rows × 50 columns

In [27]:
# Ajout des autres lites
D_VoteSup = pd.DataFrame()
# Divers Centre
D_VoteSup["Nb VOIX DVC SUP"] = Votants["Nb VOIX DIVC"]
D_VoteSup["%VOIX DVC SUP"] = D_VoteSup["Nb VOIX DVC SUP"] / Votants["Voix Exprimées Totales"]
# Divers Gauche
D_VoteSup["Nb VOIX DVG SUP"] = Votants["Nb VOIX DIVG"]
D_VoteSup["%VOIX DVG SUP"] = D_VoteSup["Nb VOIX DVG SUP"] / Votants["Voix Exprimées Totales"]
# Ecologiste
D_VoteSup["Nb VOIX Ecologistes SUP"] = Votants["Nb VOIX Ecologiques"]
D_VoteSup["%Nb VOIX Ecologistes SUP"] = D_VoteSup["Nb VOIX Ecologistes SUP"] / Votants["Voix Exprimées Totales"]
# Ensemble/Renaissance
D_VoteSup["Nb VOIX ENS SUP"] = Votants["Nb VOIX Ensemble"]
D_VoteSup["%Nb VOIX ENS SUP"] = D_VoteSup["Nb VOIX ENS SUP"] / Votants["Voix Exprimées Totales"]
# Extrème Droite
D_VoteSup["Nb VOIX EXTD SUP"] = Votants["Nb VOIX EXT Droite"]
D_VoteSup["%Nb VOIX EXTD SUP"] = D_VoteSup["Nb VOIX EXTD SUP"] / Votants["Voix Exprimées Totales"]

D_VoteSup.head()
Out[27]:
Nb VOIX DVC SUP %VOIX DVC SUP Nb VOIX DVG SUP %VOIX DVG SUP Nb VOIX Ecologistes SUP %Nb VOIX Ecologistes SUP Nb VOIX ENS SUP %Nb VOIX ENS SUP Nb VOIX EXTD SUP %Nb VOIX EXTD SUP
0 0.0 0.000000 0.0 0.0 0 0.00000 10176.8 0.166959 0.0 0.0
1 12989.4 0.175414 0.0 0.0 0 0.00000 0.0 0.000000 0.0 0.0
2 0.0 0.000000 0.0 0.0 0 0.00000 10891.4 0.200051 0.0 0.0
3 0.0 0.000000 0.0 0.0 0 0.00000 11183.0 0.166634 0.0 0.0
4 0.0 0.000000 0.0 0.0 2034 0.03895 7504.0 0.143697 0.0 0.0
In [28]:
# Sauvegarde du fichier préparé:
Votants.to_excel("Prev2024_+30%.xlsx", index=True)
Prévisions Législatives 2024 - Participation +30% par rapport aux Européennes 2024
NB: vous verrez "25%" dans le nom de certaines colonnes prenant en compte l'augmentation de participation prévisionnelle. Différentes sources m'ont fait opté pour une augmentation de 30%. Cependant, pris par l'urgence, j'ai laissé le nom des colonnes initial.¶
Préparation du fichier
In [31]:
# Prédiction à partir du fichier comprenant un taux de votants supérieur au taux de votants des Européennes 2024
Résultats_Ajustée= pd.read_excel("PrevisionsLegis_2024_ajuste.xlsx")
Résultats_Ajustée.iloc[:,25:40].head(2)
Out[31]:
% Blancs/inscrits % Blancs/votants Nuls % Nuls/inscrits % Nuls/votants Divers centre Nb VOIX DIVC %VOIX DIVC NbVOIX25% DIVC %VOIX25% DIVC Divers gauche Nb VOIX DIVG %VOIX Divers Gauche NbVOIX25% DIVG %VOIX25% DIVG
0 0.0084 0.0151 789 0.0091 0.0163 0.0 0.0 0.00000 0.0 0.000000 0 0.0 0.0 0.0 0.0
1 0.0071 0.0124 537 0.0053 0.0092 1.0 12989.4 0.22806 12989.4 0.175414 0 0.0 0.0 0.0 0.0
In [32]:
Tmess("Projections des résultats du 1er tour des Législatives 2024",Color='firebrick', Align='center', Weight='bold',Size='20')
print("")
Tmess("Rassemblement National: {}%".format(round((Résultats_Ajustée["%VOIX25% RN"] + Résultats_Ajustée["%VOIX25% UEXTD"] +
      Résultats_Ajustée["%VOIX25% Reconquête"]).mean() * 100,2)),
      Color='darkblue', Align='left', Weight='bold')
Tmess("Union des Gauches: {}%".format(round((Résultats_Ajustée["%VOIX25% PS"] + Résultats_Ajustée["%VOIX25% UG"] + 
      Résultats_Ajustée["%VOIX25% DIVG"]).mean() * 100,2)),
      Color='red', Align='left', Weight='bold')
Tmess("Ensemble / Renaissance: {}%".format(round((Résultats_Ajustée["%VOIX25% Ensemble"] + Résultats_Ajustée["%VOIX25% Horizons"]).mean() * 100,2)),
      Color='peru', Align='left', Weight='bold')
Tmess("Les Républicains: {}%".format(round((Résultats_Ajustée["%VOIX25% Les Républicains"]).mean() * 100,2)),
      Color='blue', Align='left', Weight='bold')
Tmess("Divers Droite: {}%".format(round((Résultats_Ajustée["%VOIX25% DIVC"]).mean() * 100,2)),
      Color='blue', Align='left', Weight='bold')
Projections des résultats du 1er tour des Législatives 2024

Rassemblement National: 33.14%
Union des Gauches: 27.64%
Ensemble / Renaissance: 21.88%
Les Républicains: 3.07%
Divers Droite: 3.01%
In [33]:
# Classement du df par Nb de voix:
Resultat_2024 = top_Legis2022(Résultats_Ajustée,5)
Resultat_2024.head(3)
Out[33]:
Code département Libellé département Code circonscription législative Libellé circonscription législative Inscrits Votants % Votants Votants25% % Votants25% VotantsSup25% ... Top_1_List Top_1_% Top_2_List Top_2_% Top_3_List Top_3_% Top_4_List Top_4_% Top_5_List Top_5_%
0 01 Ain 0101 1ère circonscription 86824 48408 0.5575 62930.4 0.724804 14522.4 ... %VOIX25% RN 0.380153 %VOIX25% Ensemble 0.250345 %VOIX25% UG 0.239955 %VOIX25% Les Républicains 0.059506 %VOIX25% EXTG 0.004118
1 01 Ain 0102 2ème circonscription 102088 58219 0.5703 75684.7 0.741367 17465.7 ... %VOIX25% RN 0.374210 %VOIX25% UG 0.242071 %VOIX25% DIVC 0.175414 %VOIX25% Les Républicains 0.059742 %VOIX25% EXTG 0.003633
2 01 Ain 0103 3ème circonscription 85884 42940 0.5000 55822.0 0.649970 12882.0 ... %VOIX25% RN 0.304967 %VOIX25% Ensemble 0.282865 %VOIX25% UG 0.278106 %VOIX25% Les Républicains 0.057673 %VOIX25% EXTG 0.003820

3 rows × 28 columns

In [34]:
# Estimation Elu 1er tour
Tmess("Estimations Elus dès le 1er tour - Scénarii retenus",'black',Size='20', Weight='bold')
for i in np.arange(0.43, 0.45, 0.01):
    print("")
    Tmess("Estimation pour % votes supérieur à {}%".format(i*100))
    Tmess("Projection du Nb de candidats RN élus au 1er Tour: {} Sièges".format(Resultat_2024.loc[(Resultat_2024["Top_1_%"] >= i) & 
                                                                                (Resultat_2024["Top_1_List"] == "%VOIX25% RN")].shape[0]),
                                                                                Color ='darkblue', Align='left', Weight='bold')
    Tmess("Projection du Nb de candidats UG élus au 1er Tour: {} Sièges".format(Resultat_2024.loc[(Resultat_2024["Top_1_%"] >= i) & 
                                                                                (Resultat_2024["Top_1_List"] == "%VOIX25% UG")].shape[0]),
                                                                                Color ='red', Align='left', Weight='bold')
    Tmess("Projection du Nb de candidats Ensemble élus au 1er Tour: {} Sièges".format(Resultat_2024.loc[(Resultat_2024["Top_1_%"] >= i) & 
                                                                                (Resultat_2024["Top_1_List"] == "%VOIX25% Ensemble")].shape[0]),
                                                                                Color ='peru', Align='left', Weight='bold')
Estimations Elus dès le 1er tour - Scénarii retenus

Estimation pour % votes supérieur à 43.0%
Projection du Nb de candidats RN élus au 1er Tour: 57 Sièges
Projection du Nb de candidats UG élus au 1er Tour: 35 Sièges
Projection du Nb de candidats Ensemble élus au 1er Tour: 0 Sièges

Estimation pour % votes supérieur à 44.0%
Projection du Nb de candidats RN élus au 1er Tour: 42 Sièges
Projection du Nb de candidats UG élus au 1er Tour: 33 Sièges
Projection du Nb de candidats Ensemble élus au 1er Tour: 0 Sièges

Estimation pour % votes supérieur à 45.0%
Projection du Nb de candidats RN élus au 1er Tour: 29 Sièges
Projection du Nb de candidats UG élus au 1er Tour: 28 Sièges
Projection du Nb de candidats Ensemble élus au 1er Tour: 0 Sièges
Représentation graphique - Visuel
In [36]:
Résulats_2024_Ajus = top_Legis2022(Résultats_Ajustée,5)
Résulats_2024_Ajus.iloc[:,18:26].head(3)
Out[36]:
Top_1_List Top_1_% Top_2_List Top_2_% Top_3_List Top_3_% Top_4_List Top_4_%
0 %VOIX25% RN 0.380153 %VOIX25% Ensemble 0.250345 %VOIX25% UG 0.239955 %VOIX25% Les Républicains 0.059506
1 %VOIX25% RN 0.374210 %VOIX25% UG 0.242071 %VOIX25% DIVC 0.175414 %VOIX25% Les Républicains 0.059742
2 %VOIX25% RN 0.304967 %VOIX25% Ensemble 0.282865 %VOIX25% UG 0.278106 %VOIX25% Les Républicains 0.057673
In [37]:
Tmess("Estimation principales listes et alliés",Size='20', Weight='bold')

Tmess("Rassemblement National: {}%".format(round((Résultats_Ajustée["%VOIX25% RN"] + Résultats_Ajustée["%VOIX25% UEXTD"] + 
                                        Résultats_Ajustée["%VOIX25% Reconquête"]).mean() * 100,2)),'darkblue',Align='left', Weight='bold')
Tmess("Union des Gauches: {}%".format(round((Résultats_Ajustée["%VOIX25% PS"] + Résultats_Ajustée["%VOIX25% UG"] + 
                                   Résultats_Ajustée["%VOIX25% DIVG"]).mean() * 100,2)),'red',Align='left', Weight='bold')
Tmess("Ensemble / Renaissance: {}%".format(round((Résultats_Ajustée["%VOIX25% Ensemble"] + Résultats_Ajustée["%VOIX25% Horizons"]
                                                 ).mean() * 100,2)),'peru',Align='left', Weight='bold')

Tmess("Estimation principales listes seules",Size='20', Weight='bold')

Tmess("Rassemblement National: {}%".format(round((Résultats_Ajustée["%VOIX25% RN"]).mean() * 100,2)),'darkblue',Align='left', Weight='bold')
Tmess("Union des Gauches: {}%".format(round((Résultats_Ajustée["%VOIX25% UG"]).mean() * 100,2)),'red',Align='left', Weight='bold')
Tmess("Ensemble / Renaissance: {}%".format(round((Résultats_Ajustée["%VOIX25% Ensemble"]).mean() * 100,2)),'peru',Align='left', Weight='bold')
Tmess("Les Républicains: {}%".format(round((Résultats_Ajustée["%VOIX25% Les Républicains"] + Résultats_Ajustée["%VOIX25% UDI"]).mean() * 100,2)),'blue',Align='left', Weight='bold')
Tmess("Les DIVC: {}%".format(round((Résultats_Ajustée["%VOIX25% DIVC"]).mean() * 100,2)),'blue',Align='left', Weight='bold')
Estimation principales listes et alliés
Rassemblement National: 33.14%
Union des Gauches: 27.64%
Ensemble / Renaissance: 21.88%
Estimation principales listes seules
Rassemblement National: 28.41%
Union des Gauches: 26.91%
Ensemble / Renaissance: 21.18%
Les Républicains: 3.41%
Les DIVC: 3.01%
In [38]:
# Création du DF en vu du visuel
Resultats_Visuel = Résulats_2024_Ajus.iloc[:,:3]
Resultats_Visuel["Elu"] = Résulats_2024_Ajus["Top_1_List"]
Resultats_Visuel["% Votes"] = Résulats_2024_Ajus["Top_1_%"]
Resultats_Visuel["Second"] = Résulats_2024_Ajus["Top_2_List"]
Resultats_Visuel["% Votes2"] = Résulats_2024_Ajus["Top_2_%"]
Resultats_Visuel["Troisième"] = Résulats_2024_Ajus["Top_3_List"]
Resultats_Visuel["% Votes3"] = Résulats_2024_Ajus["Top_3_%"]
#Resultats_Visuel = Resultats_Visuel.rename(columns={"En-Tête":"Elu", "Code circonscription législative":"codeCirconscription"})
Resultats_Visuel = Resultats_Visuel.rename(columns={"En-Tête":"Elu", "Code circonscription législative":"codeCirconscription"})

Resultats_Visuel.head()
Out[38]:
Code département Libellé département codeCirconscription Elu % Votes Second % Votes2 Troisième % Votes3
0 01 Ain 0101 %VOIX25% RN 0.380153 %VOIX25% Ensemble 0.250345 %VOIX25% UG 0.239955
1 01 Ain 0102 %VOIX25% RN 0.374210 %VOIX25% UG 0.242071 %VOIX25% DIVC 0.175414
2 01 Ain 0103 %VOIX25% RN 0.304967 %VOIX25% Ensemble 0.282865 %VOIX25% UG 0.278106
3 01 Ain 0104 %VOIX25% RN 0.406057 %VOIX25% Ensemble 0.249900 %VOIX25% UG 0.215380
4 01 Ain 0105 %VOIX25% UEXTD 0.333979 %VOIX25% UG 0.247175 %VOIX25% Ensemble 0.227085
In [39]:
# Charger les données géographiques des circonscriptions législatives françaises
geojson_url = 'circonscriptions-legislatives-p20.geojson'
gdf = gpd.read_file(geojson_url)
In [40]:
Resultats_Visuel["Elu"].unique()
Out[40]:
array(['%VOIX25% RN', '%VOIX25% UEXTD', '%VOIX25% EXTD', '%VOIX25% UG',
       '%VOIX25% Ensemble', '%VOIX25% REG', '%VOIX25% DIVG',
       '%VOIX25% PS', '%VOIX25% DIVC', '%VOIX25% Horizons'], dtype=object)
In [41]:
# Dictionnaire de remplacement des noms de Listes
remplacements = {
    '%VOIX25% RN': 'RN',
    '%VOIX25% UEXTD' : 'Union Ext Droite',
    '%VOIX25% EXTD' : 'Extrême Droite',
    '%VOIX25% UG' : 'Union des Gauche',
    '%VOIX25% Ensemble' : 'Renaissance-Ensemble',
    '%VOIX25% REG' : 'Régionaliste',
    '%VOIX25% DIVG' : 'Divers Gauche',
    '%VOIX25% PS' : 'Parti Socialiste',
    '%VOIX25% DIVC' : 'Divers Centre',
    '%VOIX25% Horizons' : 'Horizons'
}

# Remplacer les valeurs dans la colonne "liste"
Resultats_Visuel[['Elu', 'Second', 'Troisième']] = Resultats_Visuel[['Elu', 'Second', 'Troisième']].replace(remplacements)
Resultats_Visuel.head()
Out[41]:
Code département Libellé département codeCirconscription Elu % Votes Second % Votes2 Troisième % Votes3
0 01 Ain 0101 RN 0.380153 Renaissance-Ensemble 0.250345 Union des Gauche 0.239955
1 01 Ain 0102 RN 0.374210 Union des Gauche 0.242071 Divers Centre 0.175414
2 01 Ain 0103 RN 0.304967 Renaissance-Ensemble 0.282865 Union des Gauche 0.278106
3 01 Ain 0104 RN 0.406057 Renaissance-Ensemble 0.249900 Union des Gauche 0.215380
4 01 Ain 0105 Union Ext Droite 0.333979 Union des Gauche 0.247175 Renaissance-Ensemble 0.227085
In [42]:
# Joindre les données sur la colonne 'Code circonscription législative'
Visuel = gdf.merge(Resultats_Visuel, left_on='codeCirconscription', right_on='codeCirconscription')
In [43]:
Resultats_Visuel['Elu'].unique()
Out[43]:
array(['RN', 'Union Ext Droite', 'Extrême Droite', 'Union des Gauche',
       'Renaissance-Ensemble', 'Régionaliste', 'Divers Gauche',
       'Parti Socialiste', 'Divers Centre', 'Horizons'], dtype=object)
In [79]:
Carte_Results_1erT(Visuel,Resultats_Visuel)
Out[79]:
Make this Notebook Trusted to load map: File -> Trust Notebook
In [ ]: